<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>A canvas shadow path example</title>

    <script type="text/xaml" id="xaml"><?xml version="1.0"?>
      <Canvas xmlns="http://schemas.microsoft.com/client/2007"></Canvas></script>
<script type="text/javascript" src="../uupaa-excanvas.js"></script>

    <script>
    function boot() {
      draw(document.getElementById('canvas').getContext('2d'));
      draw(document.getElementById('canvas2').getContext('2d'), 1);
      draw(document.getElementById('vmlcanvas').getContext('2d'));
    }
    function draw(ctx, disableShadowBlurAPI) {
      if (disableShadowBlurAPI) {
        ctx.xShadowBlur = 0; // Old Silverlight(ver1, ver2) rendering simulate
      }
/*
      ctx.shadowBlur = 10;
      ctx.shadowOffsetX = 10;
      ctx.shadowOffsetY = 10;
      ctx.shadowColor = "gray";
 */
      ctx.setShadow("gray", 10, 10, 10);
      ctx.lineWidth = 3;
      ctx.globalAlpha = 1.0;

      var grad1 = ctx.createLinearGradient(105,0, 200,100);
      grad1.addColorStop(0,    'yellow');
      grad1.addColorStop(0.25, 'red');
      grad1.addColorStop(0.75, 'blue');
      grad1.addColorStop(1,    'limegreen');

      var grad2 = ctx.createRadialGradient(50,50,10,50,50,50);
      grad2.addColorStop(0,    'yellow');
      grad2.addColorStop(0.25, 'red');
      grad2.addColorStop(0.75, 'blue');
      grad2.addColorStop(1,    'limegreen');

      // linear grad box
      ctx.fillStyle = grad1;
      ctx.fillRect(105,0, 100,100);

      // skyblue box
      ctx.fillStyle = "skyblue";
      ctx.fillRect(105,100+50, 100,100);

      // radial grad oval
      ctx.beginPath();
      ctx.arc(50, 50, 50, 0, Math.PI*2, false);
      ctx.fillStyle = grad2;
      ctx.fill();

      // gold oval
      ctx.beginPath();
      ctx.arc(50, 150+50, 50, 0, Math.PI*2, false);
      ctx.fillStyle = "gold";
      ctx.fill();

      // lines
      ctx.beginPath();
      ctx.moveTo(150, 0);
      ctx.lineTo(0, 150);
      ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
      ctx.stroke();

      ctx.beginPath();
      ctx.moveTo(200, 0);
      ctx.lineTo(0, 200);
      ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
      ctx.stroke();

      ctx.beginPath();
      ctx.moveTo(250, 0);
      ctx.lineTo(0, 250);
      ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
      ctx.stroke();

      ctx.beginPath();
      ctx.moveTo(300, 0);
      ctx.lineTo(0, 300);
      ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
      ctx.stroke();
    }
    </script>
    <style type="text/css">
      body { margin: 20px; font-family: arial,verdana,helvetica; background: #fff;}
      h1 { font-size: 140%; font-weight:normal; color: #036; border-bottom: 1px solid #ccc; }
      canvas { border: 2px solid #000; float: left; margin-right: 20px; margin-bottom: 20px; }
      pre { float:left; display:block; background: rgb(238,238,238); border: 1px dashed #666; padding: 15px 20px; margin: 0 0 10px 0; }
    </style>
  </head>
  <body onload="uuCanvas.ready(boot);">
    <h1>A canvas <code>shadow path</code> example</h1>
    <div>
      <canvas id="canvas" width="300" height="300"></canvas>
      <canvas id="canvas2" width="300" height="300"></canvas>
      <canvas id="vmlcanvas" class="vml" width="300" height="300"></canvas>
      <pre>
&lt;canvas id="canvas" width="300" height="300"&gt;&lt;/canvas&gt;
&lt;canvas id="canvas2" width="300" height="300"&gt;&lt;/canvas&gt;
&lt;canvas id="vmlcanvas" class="vml" width="300" height="300"&gt;&lt;/canvas&gt;

function boot() {
  draw(document.getElementById('canvas').getContext('2d'));
  draw(document.getElementById('canvas2').getContext('2d'), 1);
  draw(document.getElementById('vmlcanvas').getContext('2d'));
}
function draw(ctx, disableShadowBlurAPI) {
  if (disableShadowBlurAPI) {
    ctx.xShadowBlur = 0; // Old Silverlight(ver1, ver2) rendering simulate
  }
/*
  ctx.shadowBlur = 10;
  ctx.shadowOffsetX = 10;
  ctx.shadowOffsetY = 10;
  ctx.shadowColor = "gray";
 */
  ctx.setShadow("gray", 10, 10, 10);
  ctx.lineWidth = 3;
  ctx.globalAlpha = 1.0;

  var grad1 = ctx.createLinearGradient(105,0, 200,100);
  grad1.addColorStop(0,    'yellow');
  grad1.addColorStop(0.25, 'red');
  grad1.addColorStop(0.75, 'blue');
  grad1.addColorStop(1,    'limegreen');

  var grad2 = ctx.createRadialGradient(50,50,10,50,50,50);
  grad2.addColorStop(0,    'yellow');
  grad2.addColorStop(0.25, 'red');
  grad2.addColorStop(0.75, 'blue');
  grad2.addColorStop(1,    'limegreen');

  // linear grad box
  ctx.fillStyle = grad1;
  ctx.fillRect(105,0, 100,100);

  // skyblue box
  ctx.fillStyle = "skyblue";
  ctx.fillRect(105,100+50, 100,100);

  // radial grad oval
  ctx.beginPath();
  ctx.arc(50, 50, 50, 0, Math.PI*2, false);
  ctx.fillStyle = grad2;
  ctx.fill();

  // gold oval
  ctx.beginPath();
  ctx.arc(50, 150+50, 50, 0, Math.PI*2, false);
  ctx.fillStyle = "gold";
  ctx.fill();

  // lines
  ctx.beginPath();
  ctx.moveTo(150, 0);
  ctx.lineTo(0, 150);
  ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
  ctx.stroke();

  ctx.beginPath();
  ctx.moveTo(200, 0);
  ctx.lineTo(0, 200);
  ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
  ctx.stroke();

  ctx.beginPath();
  ctx.moveTo(250, 0);
  ctx.lineTo(0, 250);
  ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
  ctx.stroke();

  ctx.beginPath();
  ctx.moveTo(300, 0);
  ctx.lineTo(0, 300);
  ctx.strokeStyle = "rgba(12%,34%,56%,0.4)";
  ctx.stroke();
}
      </pre>
    </div>
  </body>
</html>
